//
//  WorldWideController.m
//  Sth_On_The_Road
//
//  Created by LEO on 12/29/15.
//  Copyright © 2015 Leo_Lei. All rights reserved.
//

#import "WorldWideController.h"
#import "WorldWideTableView.h"
#import "ArticleModel.h"
#import "RecommendModel.h"
#import "RecommendView.h"

@interface WorldWideController () {
    WorldWideTableView *_tableView;
    RecommendView *_view;
}

@end

@implementation WorldWideController

#pragma mark - 系统方法
- (void)viewDidLoad {
    [super viewDidLoad];
    
    //  更改当前视图控制器的名字
    self.navigationItem.title = @"看世界";
    //  显示内容视图
    [self showContentTableView];
    
    //  网络获取数据
    [self getRecommendData];
    [self getArticleData];
    
    __weak WorldWideController *weakSelf = self;
    
    //  下拉刷新
    [_tableView addPullDownRefreshBlock:^{
        [weakSelf getArticleData];
    }];
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - 显示内容视图
- (void)showContentTableView {
    //  创建表视图，并添加到当前视图控制器的视图上
    CGRect tableViewFrame = CGRectMake(0, 0, kScreenWidth, kScreenHeight - NAVIGATIONBARHEIGHT);
    _tableView = [[WorldWideTableView alloc] initWithFrame:tableViewFrame
                                                     style:UITableViewStylePlain];
    [self.view addSubview:_tableView];
}

#pragma mark 请求文章数据 
- (void)getArticleData {
    //  1)创建网络请求
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    
    //  参数可以不设置, 默认也是从索引值为0的文章开始, 获取10篇文章
    NSDictionary *parameters = @{@"sn": @"0",
                                 @"nu": @"10"};

    //  2)发送GET请求获取数据
    //  获取文章数据
    [manager GET:ARTICLEURL parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        //   创建数组用于存储页面相关数据
        NSMutableArray *articleArray = [NSMutableArray array];
        NSArray *data = responseObject[@"data"];
        
        for (NSDictionary *dataDic in data) {
            NSArray *array = dataDic[@"articles"];
            for (NSDictionary *articleDic in array) {
                ArticleModel *articleModel = [[ArticleModel alloc] initWithDataDic:articleDic];
                [articleArray addObject:articleModel];
            }
        }
        
        //  3)数据传递给表视图
        if (articleArray.count != 0) {
            _tableView.dataArray = articleArray;
        }
        
        [_tableView reloadData];
        
        //  4)停止刷新动画
        [_tableView.pullToRefreshView stopAnimating];
    }
         failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"文章页面网络请求失败, 错误原因:%@", error);
    }];
}

#pragma mark 请求推荐页面数据
- (void)getRecommendData {
    //  1)创建网络请求
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    //  2)获取推荐文章数据
    [manager GET:RECOMMENDURL parameters:nil progress:nil
         success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        //  创建数组用于存储请求数据
        NSMutableArray *dataArray = [NSMutableArray array];
        
        //  将通过data键访问到的数据存到数组中
        NSArray *dataResult = responseObject[@"data"];
        
        for (NSDictionary *dataDic in dataResult) {
            //  解析数组中的数据
            RecommendModel *recommendModel = [[RecommendModel alloc] initWithDataDic:dataDic];
            //  将解析好的数据存到数组中
            [dataArray addObject:recommendModel];
        }
        //  3)数据传递给表视图
        _tableView.recommendArray = dataArray;
             
        [_tableView reloadData];
             
        //  4)停止刷新动画
        [_tableView.pullToRefreshView stopAnimating];
    }
         failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"推荐页面网络请求失败, 错误原因:%@", error);
    }];
}

@end
